#include <bits/stdc++.h>
using namespace std;

#define int long long

void solve(){
	int n;cin>>n;
	vector<int> a(n+1);
	for(int i=1;i<=n;i++)cin>>a[i];
	vector<vector<int>> g(n+1);
	for(int i=0;i<n-1;i++){
		int u,v;cin>>u>>v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	vector<vector<int>> f(n+1,vector<int>(2));
	auto dfs=[&](auto&&dfs,int x,int fa)->void{
		f[x][1]=a[x];
		for(int y:g[x]){
			if(y!=fa){
				dfs(dfs,y,x);
				f[x][0]+=max(f[y][0],f[y][1]);
				f[x][1]+=f[y][0];
			}
		}
	};
	dfs(dfs,1,0);
	cout<<max(f[1][0],f[1][1]);
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	int t=1;
	// cin>>t;
	while(t--){
		solve();
		if(t)cout<<"\n";
	}
	return 0;
}